﻿#define _CRT_SECURE_NO_WARNINGS

//79.
//给你一个 非严格递增排列 的数组 nums ，请你 原地 删除重复出现的元素，使每个元素 只出现一次 ，返回删除后数组的新长度。
//元素的 相对顺序 应该保持 一致 。然后返回 nums 中唯一元素的个数。
//
//考虑 nums 的唯一元素的数量为 k ，你需要做以下事情确保你的题解可以被通过：
//
//更改数组 nums ，使 nums 的前 k 个元素包含唯一元素，并按照它们最初在 nums 中出现的顺序排列。nums 的其余元素与 nums 的大小不重要。
//返回 k 。
int removeDuplicates(int* nums, int numsSize) {
    // 定义快慢指针
    int fast = 1;
    int slow = 1;
    // 当快指针不指向空时进⾏判断
    while (fast <= numsSize - 1) {
        // 判断快指针指向的元素与前⼀个元素是否相同
        if (nums[fast] != nums[fast - 1]) {
            // 若不相同，将快指针指向的元素赋值给慢指针指向的元素
            nums[slow++] = nums[fast];
        }
        // 快指针后移，继续遍历
        fast++;
    }
    // 返回慢指针的值作为数组⻓度
    return slow;
}